From 68c235decf23ee76e70dfbfe6bc5e5458f0413ba Mon Sep 17 00:00:00 2001 From: =?utf8?q?Florian=20M=C3=BCllner?= Date: Sat, 24 May 2025 00:30:16 +0200 Subject: [PATCH] fileUtils: Don't collect files as `dir` The method collects the children of subdirectories, regardless of the children's file types. It is therefore odd to return files as `dir`, in particular as the method is indeed used to collect plain files (session modes and search providers) as well as directories (installed extensions and extension updates). Change the returned objects to return files as `file`, which works for both regular files and directories. Part-of: --- js/misc/fileUtils.js | 10 +++++----- js/ui/extensionSystem.js | 4 ++-- js/ui/remoteSearch.js | 4 ++-- js/ui/sessionMode.js | 4 ++-- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/js/misc/fileUtils.js b/js/misc/fileUtils.js index bff53eaeb..cbbeac85e 100644 --- a/js/misc/fileUtils.js +++ b/js/misc/fileUtils.js @@ -4,16 +4,16 @@ import Gio from 'gi://Gio'; export {loadInterfaceXML} from './dbusUtils.js'; /** - * @typedef {object} SubdirInfo - * @property {Gio.File} dir the file object for the subdir - * @property {Gio.FileInfo} info the file descriptor for the subdir + * @typedef {object} ChildInfo + * @property {Gio.File} file the file object for the child + * @property {Gio.FileInfo} info the file descriptor for the child */ /** * @param {string} subdir the subdirectory to search within the data directories * @param {boolean} includeUserDir whether the user's data directory should also be searched in addition * to the system data directories - * @returns {Generator} a generator which yields file info for subdirectories named + * @returns {Generator} a generator which yields child infos for subdirectories named * `subdir` within data directories */ export function* collectFromDatadirs(subdir, includeUserDir) { @@ -35,7 +35,7 @@ export function* collectFromDatadirs(subdir, includeUserDir) { if (fileEnum != null) { let info; while ((info = fileEnum.next_file(null))) - yield {dir: fileEnum.get_child(info), info}; + yield {file: fileEnum.get_child(info), info}; } } } diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index 008f01c64..f12ee07a3 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -656,7 +656,7 @@ export class ExtensionManager extends Signals.EventEmitter { if (!this.updatesSupported) return; - for (const {dir, info} of FileUtils.collectFromDatadirs('extension-updates', true)) { + for (const {file: dir, info} of FileUtils.collectFromDatadirs('extension-updates', true)) { let fileType = info.get_file_type(); if (fileType !== Gio.FileType.DIRECTORY) continue; @@ -707,7 +707,7 @@ export class ExtensionManager extends Signals.EventEmitter { const includeUserDir = global.settings.get_boolean('allow-extension-installation'); const extensionFiles = [...FileUtils.collectFromDatadirs('extensions', includeUserDir)]; - const extensionObjects = extensionFiles.map(({dir, info}) => { + const extensionObjects = extensionFiles.map(({file: dir, info}) => { let fileType = info.get_file_type(); if (fileType !== Gio.FileType.DIRECTORY) return null; diff --git a/js/ui/remoteSearch.js b/js/ui/remoteSearch.js index ae582f194..dbd0494ec 100644 --- a/js/ui/remoteSearch.js +++ b/js/ui/remoteSearch.js @@ -140,8 +140,8 @@ export function loadRemoteSearchProviders(searchSettings) { if (searchSettings.get_boolean('disable-external')) return []; - for (const {dir} of FileUtils.collectFromDatadirs('search-providers', false)) - loadRemoteSearchProvider(dir); + for (const {file} of FileUtils.collectFromDatadirs('search-providers', false)) + loadRemoteSearchProvider(file); let sortOrder = searchSettings.get_strv('sort-order'); diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js index 6c2a15ee0..10cf30709 100644 --- a/js/ui/sessionMode.js +++ b/js/ui/sessionMode.js @@ -130,8 +130,8 @@ function _loadMode(file, info) { * Loads external session modes from the system data directories. */ function _loadModes() { - for (const {dir, info} of FileUtils.collectFromDatadirs('modes', false)) - _loadMode(dir, info); + for (const {file, info} of FileUtils.collectFromDatadirs('modes', false)) + _loadMode(file, info); } export function listModes() { -- 2.39.5